//package net.jsoft.pms.web.oracle.scs;
//
//import java.io.IOException;
//import java.io.OutputStream;
//import java.io.UnsupportedEncodingException;
//import java.net.URLEncoder;
//import java.util.ArrayList;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import javax.servlet.http.HttpSession;
//
//import org.apache.poi.hssf.usermodel.HSSFCellStyle;
//import org.apache.poi.hssf.usermodel.HSSFRow;
//import org.apache.poi.hssf.usermodel.HSSFSheet;
//import org.apache.poi.hssf.usermodel.HSSFWorkbook;
//import org.apache.poi.ss.usermodel.CellType;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Controller;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.ResponseBody;
//
//import com.alibaba.fastjson.JSONObject;
//import com.github.pagehelper.Page;
//import com.github.pagehelper.PageHelper;
//
//import net.jsoft.platform.core.util.platform.PlatformUtils;
//import net.jsoft.platform.core.util.ref.BeanRefUtil;
//import net.jsoft.platform.core.web.BaseController;
//import net.jsoft.pms.mapper.scs.ServicesListMapper;
//import net.jsoft.pms.vo.scs.PublishService;
//import net.jsoft.pms.vo.scs.Service;
//
//@Controller
//@RequestMapping("/servicesList")
//@SuppressWarnings(
//{ "rawtypes", "unchecked" })
//public class ServicesListController extends BaseController
//{
//    private String PREFIX = "/pms/oracle/scs/";
//
//    @Autowired
//    private ServicesListMapper mapper;
//
//    private HSSFWorkbook workbook;
//
//    /**
//     * 跳转到计划管理首页
//     */
//    @RequestMapping("")
//    public String index()
//    {
//        return PREFIX + "serviceList";
//    }
//
//    @RequestMapping("/getList")
//    public String getList()
//    {
//        return PREFIX + "serviceList";
//    }
//
//    @RequestMapping("/list")
//    @ResponseBody
//    public List<Service> list(String type)
//    {
//        List<Service> sc = mapper.findByPageAndParmsRtnBean(null, null, type);
//        return sc;
//    }
//
//    @RequestMapping("/desktop")
//    @ResponseBody
//    public Map<String, Object> desktop()
//    {
//        Map<String, Object> resp = new HashMap<String, Object>();
//        List<Service> list = mapper.findAll();
//        resp.put("list", list);
//        resp.putAll(groupByDwfbzt(list));
//        return resp;
//    }
//
//    private Map<String, List<Service>> groupByDwfbzt(List<Service> list)
//    {
//        Map<String, List<Service>> map = new HashMap<String, List<Service>>();
//        String k = null;
//        for (Service s : list)
//        {
//            k = "zt" + s.getDwfbzt();
//            if (map.containsKey(k))
//            {
//                List<Service> newList = map.get(k);
//                newList.add(s);
//                map.put(k, newList);
//            }
//            else
//            {
//                List<Service> newList = new ArrayList<Service>();
//                newList.add(s);
//                map.put(k, newList);
//            }
//        }
//        return map;
//    }
//
//    @RequestMapping("/initServicesList")
//    public String initServicesListPage()
//    {
//        return PREFIX + "serviceListPublic";
//    }
//
//    @RequestMapping("/initServicesListData")
//    @ResponseBody
//    public Map<String, Object> initServicesListData()
//    {
//        Map<String, Object> resp = new HashMap<String, Object>();
//        List<Service> publicList = mapper.findPublicServices();
//        List<Service> addPublicList = mapper.addPublicServices();
//        resp.put("publicList", publicList);
//        resp.put("addPublicList", addPublicList);
//        return resp;
//
//    }
//
//    @RequestMapping("/exportExcel")
//    @ResponseBody
//    public void exportExcel(HttpServletRequest request, HttpServletResponse response)
//    {
//        HttpSession session = request.getSession();
//        session.setAttribute("state", null);
//        // 生成提示信息，
//        response.setContentType("application/vnd.ms-excel");
//        String codedFileName = null;
//        OutputStream fOut = null;
//
//        String add = this.getRequest().getParameter("add");
//        String all = this.getRequest().getParameter("all");
//        String form = this.getRequest().getParameter("form");
//        String viewExport = null;
//        List<Service> addService = JSONObject.parseArray(add, Service.class);
//        List<Service> allService = JSONObject.parseArray(all, Service.class);
//        List<Map> publishedServiceMap = JSONObject.parseArray(form, Map.class);
//        PublishService publishedService = new PublishService();
//        for (Map<String, String> m : publishedServiceMap)
//        {
//            if ("type".equals(m.get("name")))
//            {
//                viewExport = m.get("value");
//            }
//            else
//            {
//                BeanRefUtil.setFieldValue(publishedService, m.get("name"), m.get("value"));
//            }
//
//        }
//        if (!"viewExport".equals(viewExport))
//        {
//            String id = PlatformUtils.createPK();
//            publishedService.setId(id);
//            mapper.insertMain(publishedService);
//            mapper.insertService(allService, publishedService, "all");
//            mapper.insertService(addService, publishedService, "add");
//        }
//
//        try
//        {
//            // 进行转码，使其支持中文文件名
//            codedFileName = URLEncoder.encode("电子税务局局端服务清册_" + publishedService.getVersion(), "UTF-8");
//            response.setHeader("content-disposition", "attachment;filename=" + codedFileName + ".xls");
//            workbook = new HSSFWorkbook();
//            // 产生工作表对象
//            HSSFSheet sheet0 = workbook.createSheet("增量发布说明");
//
//            HSSFCellStyle cellStyle = workbook.createCellStyle();
//            cellStyle.setWrapText(false);
//
//            HSSFRow row = sheet0.createRow(0);// 创建一行
//            row.setRowStyle(cellStyle);
//            row.createCell(0, CellType.STRING);
//
//            row.createCell(0, CellType.STRING).setCellValue("序号");
//            row.createCell(1, CellType.STRING).setCellValue("集成服务ID");
//            row.createCell(2, CellType.STRING).setCellValue("集成服务名称");
//            row.createCell(3, CellType.STRING).setCellValue("业务主题");
//            row.createCell(4, CellType.STRING).setCellValue("服务类型");
//            row.createCell(5, CellType.STRING).setCellValue("服务说明");
//            row.createCell(6, CellType.STRING).setCellValue("XSD报文文件序号");
//            row.createCell(7, CellType.STRING).setCellValue("增量类型");
//            row.createCell(8, CellType.STRING).setCellValue("修改说明");
//            row.createCell(9, CellType.STRING).setCellValue("影响分析");
//
//            int i = 1;
//            for (Service p : addService)
//            {
//                row = sheet0.createRow(i);// 创建一行
//                row.setRowStyle(cellStyle);
//                row.createCell(0, CellType.STRING).setCellValue(i);
//                row.createCell(1, CellType.STRING).setCellValue(p.getYwfwid());
//                row.createCell(2, CellType.STRING).setCellValue(p.getYwfwmc());
//                row.createCell(3, CellType.STRING).setCellValue(p.getYwy());
//                row.createCell(4, CellType.STRING).setCellValue(p.getFwlx());
//                row.createCell(5, CellType.STRING).setCellValue(p.getFwljms());
//                row.createCell(6, CellType.STRING).setCellValue(p.getYwfwxh());
//                //3新增待发布，4已修改待发布，5已作废待发布
//                String zt = p.getDwfbzt();
//                if ("3".endsWith(zt))
//                {
//                    zt = "新增";
//                }
//                else if ("4".endsWith(zt))
//                {
//                    zt = "修改";
//                }
//                else if ("5".endsWith(zt))
//                {
//                    zt = "作废";
//                }
//                row.createCell(7, CellType.STRING).setCellValue(zt);
//                row.createCell(8, CellType.STRING).setCellValue(p.getEditNote());
//                row.createCell(9, CellType.STRING).setCellValue(p.getInfluence());
//                i++;
//            }
//
//            // 产生工作表对象
//            HSSFSheet sheet1 = workbook.createSheet("电子税务局局端服务清单汇总");
//
//            HSSFRow row1 = sheet1.createRow(0);// 创建一行
//            row1.setRowStyle(cellStyle);
//            row1.createCell(0, CellType.STRING);
//
//            row1.createCell(0, CellType.STRING).setCellValue("序号");
//            row1.createCell(1, CellType.STRING).setCellValue("集成服务ID");
//            row1.createCell(2, CellType.STRING).setCellValue("集成服务名称");
//            row1.createCell(3, CellType.STRING).setCellValue("业务主题");
//            row1.createCell(4, CellType.STRING).setCellValue("服务类型");
//            row1.createCell(5, CellType.STRING).setCellValue("服务说明");
//            row1.createCell(6, CellType.STRING).setCellValue("XSD报文文件序号");
//
//            i = 1;
//            for (Service p : allService)
//            {
//                row1 = sheet1.createRow(i);// 创建一行
//                row1.setRowStyle(cellStyle);
//                row1.createCell(0, CellType.STRING).setCellValue(i);
//                row1.createCell(1, CellType.STRING).setCellValue(p.getYwfwid());
//                row1.createCell(2, CellType.STRING).setCellValue(p.getYwfwmc());
//                row1.createCell(3, CellType.STRING).setCellValue(p.getYwy());
//                row1.createCell(4, CellType.STRING).setCellValue(p.getFwlx());
//                row1.createCell(5, CellType.STRING).setCellValue(p.getFwljms());
//                row1.createCell(6, CellType.STRING).setCellValue(p.getYwfwxh());
//                i++;
//            }
//
//            fOut = response.getOutputStream();
//            workbook.write(fOut);
//        }
//        catch (UnsupportedEncodingException e1)
//        {
//        }
//        catch (Exception e)
//        {
//        }
//        finally
//        {
//            try
//            {
//                if (fOut != null)
//                {
//                    fOut.flush();
//                    fOut.close();
//                }
//            }
//            catch (IOException e)
//            {
//            }
//            session.setAttribute("state", "open");
//        }
//
//    }
//
//    @RequestMapping("/scsMainList")
//    public String scsMainList()
//    {
//        return PREFIX + "scsMainList";
//    }
//
//    @RequestMapping("/serviceListPublicView")
//    public String serviceListPublicView()
//    {
//        return PREFIX + "serviceListPublicView";
//    }
//
//    @RequestMapping("/scsMainListDate")
//    @ResponseBody
//    public JSONObject scsMainListDate(int pageSize, int pageNumber)
//    {
//        PageHelper.startPage(pageNumber, pageSize);
//        Page<PublishService> page = mapper.findPublishService();
//        List<PublishService> list = page.getResult();
//        JSONObject json = new JSONObject();
//        json.put("rows", list); //这里的 rows 和total 的key 是固定的 
//        json.put("total", page.getTotal());
//        return json;
//    }
//
//    @RequestMapping("/delete")
//    @ResponseBody
//    public String delete(String id)
//    {
//        int i = mapper.deleteMain(id);
//        mapper.deleteSub(id);
//        return i > 0 ? "删除成功" : "删除失败";
//    }
//
//    @RequestMapping("/serviceListPublicViewDate")
//    @ResponseBody
//    public Map<String, Object> serviceListPublicViewDate(String id)
//    {
//        Map<String, Object> resp = new HashMap<String, Object>();
//        List<Service> publicList = mapper.findPublicServicesById(id);
//        List<Service> addPublicList = mapper.addPublicServicesById(id);
//        PublishService publishService = mapper.findPublishServiceById(id);
//        resp.put("publicList", publicList);
//        resp.put("addPublicList", addPublicList);
//        resp.put("publishService", publishService);
//        return resp;
//
//    }
//
//}
